package cn.bj.yu.tvolatile;

import java.util.concurrent.TimeUnit;

/**
 * @author 周宇
 * @create 2020-08-16 0:36
 * Volatile 用来保证数据的同步，也就是可见性
 */
public class JMMVolatileDemo01 {
    // volatile 不加volatile没有可见性
    // 不加 volatile 就会死循环，这里给大家将主要是为了面试，可以避免指令重排
    private static volatile int num = 0;

    public static void main(String[] args) { //主线程 main
        new Thread(() -> { //线程1
            while (num == 0) {

            }
        }).start();

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        num = 1;
        System.out.println(num);
    }
}
